﻿using System;
using System.ComponentModel.DataAnnotations;
using System.IO;
using Rendiciones.Logica.Enumeradores;
using Rendiciones.Logica.Modelos.Validaciones;
using Tesla.Proveedores;

namespace Rendiciones.Logica.Modelos
{
    public class Gasto : Entidad<Gasto>
    {
        public int IdGasto { get; set; } 
        public int IdRendicion { get; set; }
        public int NroRendicion { get; set; }
        public TipoGasto TipoGasto { get; set; }
        public string DescripcionTipoGasto { get { return TipoGasto.DescripcionGasto; } }
        public TipoDocumento TipoDocumento { get; set; }
        public string DescripcionTipoDocumento { get { return TipoDocumento.Descripcion; } }
        [NoPuedeEstarEnBlanco(ErrorMessage = "Ingrese Rut de Beneficiario")]
        public string RutBeneficiario { get; set; }
        public string NombreBeneficiario { get; set; }
        [NoPuedeEstarEnBlanco(ErrorMessage = "Ingrese Descripción de Gasto")]
        public string Descripcion { get; set; }
        public FileInfo Archivo { get; set; }
        [ValorNoPuedeSerCero(ErrorMessage = "Ingrese Monto Neto")]
        public int MontoNeto { get; set; }
        [ValorNoPuedeSerCero(ErrorMessage = "Ingrese Iva")]
        public int Iva { get; set; }
        [ValorNoPuedeSerCero(ErrorMessage = "Ingrese Retencion")]
        public int Retencion { get; set; }
        [ValorNoPuedeSerCero(ErrorMessage = "Ingrese Total Pagado")]
        public int TotalPagado { get; set; }
        public int MontoExento { get; set; }
        public ETipoDocumentoGenerico TipoDocumentoGenerico { get; set; }
        [NoPuedeEstarEnBlanco(ErrorMessage = "Debe ingresar fecha de documento")]
        public DateTime? FechaDocumento { get; set; }
        public int GastoAsociado { get; set; }
        [ValorNoPuedeSerCero(ErrorMessage = "Ingrese Numero de Documento")]
        public int NroDocumento { get; set; }
        public string ObservacionesSupervisor { get; set; }
        public string ObservacionesGerente { get; set; }

        public string StrFechaDocumento { get { return FechaDocumento.HasValue ? FechaDocumento.Value.ToString("dd-MM-yyyy") : "--"; } }

        public bool Eliminado { get; set; }
        public bool Rechazado { get; set; }
    }
}